package com.py.credit.dao;

import com.py.credit.entity.DissentProcess;
import com.py.framework.core.common.Page;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 前台异议修复Dao接口
 *
 * @author YaoS
 * @version project2.6
 * @date 2019-01-17 15:19
 */
public interface DissentProcessDao {

    /**
     * 功能描述: 保存异议修复表单
     *
     * @param dissentProcess 异议修复表单对象
     * @author YaoS
     * @date 19/1/21 16:20
     */
    void add(DissentProcess dissentProcess);

    /**
     * 功能描述: 更新文件路径
     *
     * @param id      主键id
     * @param fileUrl 文件路径
     * @return
     * @author YaoS
     * @date 19/1/21 16:21
     */
    void saveFile(
            @Param(value = "id") int id,
            @Param(value = "fileUrl") String fileUrl);

    /**
     * 功能描述: 根据选择的数据查询数据拥有者id
     *
     * @param resourceId 名表
     * @param recordId   资源id
     * @return String 数据拥有者id
     * @author YaoS
     * @date 19/1/21 17:06
     */
    String selectDataOwner(@Param(value = "resourceId") String resourceId,
                           @Param(value = "recordId") String recordId);

    /**
     * 功能描述: 查询申请详情
     *
     * @param id 业务数据id
     * @return DissentProcess 申请对象
     * @author YaoS
     * @date 19/1/21 17:40
     */
    DissentProcess getFrontDissentProcess(String id);

    /**
     * 功能描述: 查询审核历史详情
     *
     * @param tableName 表名
     * @param recordId  表数据id
     * @return HashMap 值
     * @author YaoS
     * @date 19/1/28 20:37
     */
    HashMap<String, Object> selectReviewData(
            @Param(value = "tableName") String tableName,
            @Param(value = "recordId") String recordId);

    /**
     * 功能描述: 工作流结束更新审核状态
     *
     * @param id         工作流业务id
     * @param status     审核状态
     * @param finishTime 结束时间
     * @return
     * @author YaoS
     * @date 19/1/21 17:46
     */
    void updateStatus(
            @Param(value = "id") int id,
            @Param(value = "status") String status,
            @Param(value = "finishTime") String finishTime);

    /**
     * 功能描述:查询申请记录历史
     *
     * @param tyshxydm  当前企业统一社会信用代码
     * @param startTime 申请时间
     * @param page      分页参数
     * @return List 查询结果
     * @author YaoS
     * @date 19/1/23 14:48
     */
    List<Map<String, Object>> selectHistoryListForPage(
            @Param(value = "tyshxydm") String tyshxydm,
            @Param(value = "type") String type,
            @Param(value = "startTime") String startTime,
            @Param(value = "endTime") String endTime,
            @Param(value = "page") Page page
    );
}
